<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //一、 静态成员 ： static  和类有关系 和对象没有关系的成员 ，调用不需要实力化；
        // ES5 ：静态成员
        // function Person(name,age){
        //     this.name = name;
        //     this.age = age;
        // }
        // Person.num = 10;
        // Person.fn = function(){
        //     console.log("fn");
        // }


        // // let zhangsan = new Person("张三",20)
        // // let lisi = new Person("李四",21);

        // console.log(Person.num);
        // Person.fn();


        // ES6 : static 修饰符 

        // class Person{
        //     static num = 10;
        //     constructor(name,age){
        //         this.name = name;
        //         this.age = age;
        //     }
        //     static fn(){
        //         console.log("fn");
        //     }
        // }


        // console.log(Person.num);
        // Person.fn();


        // static 的使用 ： 统计一个类被实例化了多少次；
        // let num = 0;
        // class Person{
        //     static num = 0;
        //     constructor(name,age){
        //         this.name = name;
        //         this.age = age;
        //         Person.num++;
        //         // this.num = 0;
        //         // this.num++;
        //         // num++;
        //     }
        // }
        // let zhangsan = new Person("张三",20);
        // let lisi  = new Person("李四",21);
        // console.log(Person.num);
        // console.log(num);
        // console.log(zhangsan.num);
        // console.log(lisi.num);

        // Promise.all() Promise.race()
       

        // 总结 静态成员 ： static  和类有关系和对象没有关系；
        // 不需要实例化调用 ，分静态属性和静态方法；



        // 二、私有成员：类的内部可以访问 类外部不能访问；
        // ES5 
        // function Person(){
        //     this.name = "张三";
        //     this.age =20;
        //     // this.weight = "100kg";
        //     let _weight = "100kg";
        // }

        // let zhangsan = new Person();
        // console.log(zhangsan.name);
        // console.log(zhangsan.weight);

        // ES6 私有属性修饰符 # 

        class Person{
            #weight = "100kg";
            constructor(){
                this.name = "张三";
                this.age = 20;
            }
            // 共有方法获取私有属性；
            getWeight(){
                console.log("体重是",this.#weight);
            }
        }

        let zhangnan = new Person();
        console.log(zhangnan.name);
        // console.log(zhangnan.#weight);
        zhangnan.getWeight();



    </script>
</body>
</html>